package com.sx.micowell.framework.tools;


import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;

import com.miloyu.modelnet.response.CourseInfo;
import com.miloyu.modelnet.response.TrainListBeanInfo;
import com.miloyu.modelnet.response.TrainListSettingInfo;
import com.sx.micowell.framework.adapter.binding.adapter.base.MultiTypeBean;

public class DiffUtils {
    private static final DiffUtils S_DIFF_UTILS = new DiffUtils();

    private DiffUtil.ItemCallback<MultiTypeBean> multiTypeBeanItemCallback;
    private DiffUtil.ItemCallback<CourseInfo> courseInfoItemCallback;
    private DiffUtil.ItemCallback<TrainListBeanInfo> trainListBeanInfoItemCallback;
    private DiffUtil.ItemCallback<TrainListSettingInfo> trainListSettingInfoItemCallback;


    public static DiffUtils getInstance() {
        return S_DIFF_UTILS;
    }

    public DiffUtil.ItemCallback<TrainListSettingInfo> getTrainListSettingInfoItemCallback() {
        if (trainListSettingInfoItemCallback == null) {
            trainListSettingInfoItemCallback = new DiffUtil.ItemCallback<TrainListSettingInfo>() {
                @Override
                public boolean areItemsTheSame(@NonNull TrainListSettingInfo oldItem, @NonNull TrainListSettingInfo newItem) {
                    //返回值表示新数据传入时这两个位置的数据是否时同一个条目
                    return false;
                }

                @Override
                public boolean areContentsTheSame(@NonNull TrainListSettingInfo oldItem, @NonNull TrainListSettingInfo newItem) {
                    //返回值表示新老位置的数据内容是否相同，这个方法在areItemsTheSame（）返回true时生效
                    return false;
                }
            };
        }
        return trainListSettingInfoItemCallback;
    }

    public DiffUtil.ItemCallback<MultiTypeBean> getMultiTypeBeanItemCallback() {
        if (multiTypeBeanItemCallback == null) {
            multiTypeBeanItemCallback = new DiffUtil.ItemCallback<MultiTypeBean>() {
                @Override
                public boolean areItemsTheSame(@NonNull MultiTypeBean oldItem, @NonNull MultiTypeBean newItem) {
                    //返回值表示新数据传入时这两个位置的数据是否时同一个条目
                    return oldItem.equals(newItem);
                }

                @Override
                public boolean areContentsTheSame(@NonNull MultiTypeBean oldItem, @NonNull MultiTypeBean newItem) {
                    //返回值表示新老位置的数据内容是否相同，这个方法在areItemsTheSame（）返回true时生效
                    return false;
                }
            };
        }
        return multiTypeBeanItemCallback;
    }

    public DiffUtil.ItemCallback<CourseInfo> getCourseInfoItemCallback() {
        if (courseInfoItemCallback == null) {
            courseInfoItemCallback = new DiffUtil.ItemCallback<CourseInfo>() {
                @Override
                public boolean areItemsTheSame(@NonNull CourseInfo oldItem, @NonNull CourseInfo newItem) {
                    //返回值表示新数据传入时这两个位置的数据是否时同一个条目
                    return oldItem.equals(newItem);
                }

                @Override
                public boolean areContentsTheSame(@NonNull CourseInfo oldItem, @NonNull CourseInfo newItem) {
                    //返回值表示新老位置的数据内容是否相同，这个方法在areItemsTheSame（）返回true时生效
                    return false;
                }
            };
        }
        return courseInfoItemCallback;
    }



    public DiffUtil.ItemCallback<TrainListBeanInfo> getTrainListBeanInfoItemCallback() {
        if (trainListBeanInfoItemCallback == null) {
            trainListBeanInfoItemCallback = new DiffUtil.ItemCallback<TrainListBeanInfo>() {
                @Override
                public boolean areItemsTheSame(@NonNull TrainListBeanInfo oldItem, @NonNull TrainListBeanInfo newItem) {
                    //返回值表示新数据传入时这两个位置的数据是否时同一个条目
                    return false;
                }

                @Override
                public boolean areContentsTheSame(@NonNull TrainListBeanInfo oldItem, @NonNull TrainListBeanInfo newItem) {
                    //返回值表示新老位置的数据内容是否相同，这个方法在areItemsTheSame（）返回true时生效
                    return false;
                }
            };
        }
        return trainListBeanInfoItemCallback;
    }



}